package br.com.iswe.gwt.ui.client;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusListenerAdapter;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;

/**
 * 
 * Componente que reune campo data e hora.
 * 
 * @author Rafael Noronha de Almeida
 *
 */
public class DateTimeBox extends Composite {

	private DateBox dateBox = new DateBox();
	private TimeBox timeBox = new TimeBox();
	private HorizontalPanel hPanel = new HorizontalPanel();
	private Label space = new Label(" ");
	private String name;
	
	public DateTimeBox(){
		//adiciona os componentes no hPanel
		hPanel.add(dateBox);
		space.setWidth("8px");
		hPanel.add(space);
		hPanel.add(timeBox);
		//informa como o widget do composite
		initWidget(hPanel);
	}
	
	public void addDateBoxFocusListener(FocusListenerAdapter focusListener) {
		dateBox.getDateTextBox().addFocusListener(focusListener);
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
		dateBox.setName(name + ".dateBox");
		timeBox.setName(name + ".timeBox");
	}

	public TimeBox getTimeBox() {
		return timeBox;
	}
	
	public DateBox getDateBox() {
		return dateBox;
	}

	//Retorna o valor data com hora
	public String getValue() {
		return dateBox.getDateTextBox().getText() + " " + timeBox.getText();
	}

	public void setValue(String value) {
		if(ClientUtils.isNotEmpty(value)){
			//Decompoe o valor em data e hora
			String [] array = value.split(" ");
			dateBox.getDateTextBox().setText(array[0]);
			timeBox.setText(array[1]);
		}
	}

	public void clear() {
		dateBox.getDateTextBox().setText("");
		timeBox.clear();
	}
}
